Modern storage systems typically include multiple standalone storage devices that are passive and whose performance characteristics are fixed in general once manufacturing is complete. A processor (e.g., RAID controller) executing software (firmware) is necessary to add intelligence to make the collection of unintelligent storage devices work as a unit. Because storage devices, such as solid state drives (SSDs), may be also controlled through the software or firmware, efforts have been made to control operating characteristics of a solid state drive according to the use environment.
The traditional approaches for satisfying user qualification tests require a manufacturer to provide last minute engineering processes to customize the storage devices for each customer. Customers typically wish to recalibrate their software systems whenever new models of storage devices are adopted because the characteristics of the storage devices are widely heterogeneous. However, the assumptions for one storage device are often not valid with another device. Consequently, traditional customization approaches are not sustainable in part because the manufacturer's engineering cost increases with the number of storage devices and customers requiring customization.
Therefore, a framework that enables an easy reconfiguration of storage systems on the behalf of customers is crucial. For instance, solid state disk (SSD) optimization software, such as Magician™ by Samsung, tunes performance of SSDs for a customer's system. However, customers have very limited optimization options, the optimization metrics are device-oriented in contrast to user-oriented, and the optimization is not controlled or quantifiable. In addition, storage device characteristics can change over time due to the degradation of the storage media such as wearing and fatigue. This can violate the initial assumption that the customer had, which cannot be perceived easily until malfunctions happen at the user level.
Another type of reconfigurable storage device process allows a customer to select individual features to configure a storage device. In this approach, instead of adjusting a customer's system to a new storage device, a reconfigurable storage device allows the customer to adjust the storage devices to their systems, which simplifies the maintenance and upgrade process.
Although reconfigurable storage devices can provide more flexibility in performance optimization and allow the customers to do customization, several challenges remain. One challenge is that the recalibration process constitutes a combinatory problem whose complexity increases exponentially with the number of features of the storage device to customize. In other words, current approaches do not provide systematic configuration method for feature selection. For example, if a customer changes the value of three features, it may be difficult for the customer to determine what effect the combination of features will be on the performance of the storage device.
A related challenge is that the selection of features by the customer is accomplished through a software user interface in which the customer selects the features manually. Manual selection of features without a systematic configuration method or performance guideline results is essentially a trial and error process.
Finally, the conventional reconfiguration process does not address the effects of storage device characteristics changing over time due to the degradation of the storage media. Such changes can render the original selection of features for a particular use environment no longer valid.
Accordingly, the trend of software-defined storage (SDS) in which storage resources required by an application can be defined by software and provisioned automatically requires an improved reconfigurable storage process that is more flexible.